home *** CD-ROM | disk | FTP | other *** search
- 0 REM ******************
- 1 REM ****** ******
- 2 REM **** FILE ****
- 3 REM **** RECOVERY PROGRAM ****
- 4 REM **** ****
- 5 REM **** WRITTEN BY M.CARROLL ****
- 6 REM **** MARCH 1990 ****
- 7 REM ****** ******
- 8 REM ******************
- 9 :
- 10 SYS65409:POKE51,0:POKE52,90:POKE55,0
- 20 POKE56,90:CLR:DIMD(35,20),S(255)
- 30 POKE54296,0:SYS65418:FORT=1TO35
- 40 READA:FORB=0TOA:D(T,B)=-1:NEXT
- 50 PRINT".";:NEXT:POKE53265,0:D(18,0)=0
- 60 DATA20,20,20,20,20,20,20,20,20,20
- 70 DATA20,20,20,20,20,20,20,0,18,18
- 80 DATA18,18,18,18,17,17,17,17,17,17
- 90 DATA16,16,16,16,16
- 100 POKE53280,0:POKE53281,0:POKE808,251
- 110 FORA=679TO744:READB:POKEA,B:NEXT
- 120 PRINT"[147][153]"TAB(9)"[198]ILE [210]ECOVERY [208]ROGRAM."
- 130 PRINTTAB(9)"[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]"
- 140 PRINT"[211]PECIFY START ADDRESSES TO BE SEARCHED FOR, USE [210][197][212][213][210][206] TO CONFIRM."
- 150 POKE53265,27:OPEN1,0,0:INPUT#1,A$:CLOSE1:A$=A$+" "
- 160 IFLEN(A$)/5<>INT(LEN(A$)/5)THEN120
- 170 DIMA(LEN(A$)/5-1):N=0
- 180 FORA=1TOLEN(A$)-4STEP5
- 190 B$=MID$(A$,A,4)
- 200 FORC=0TO3:A(N)=A(N)*16
- 210 A(N)=A(N)+ASC(MID$(A$,A+C,4))-48+7*(ASC(MID$(A$,A+C,4))>64):NEXT
- 220 N=N+1:NEXT:N=N-1
- 230 SYS65511:PRINT:POKE198,0
- 240 PRINT"[147][208]RESS ANY KEY TO START FORMATTING A FRESH DISC...":POKE198,0
- 250 WAIT198,1:POKE198,0
- 260 PRINT"[147][207]KAY...":T1=1:T2=1:B1=0:B2=0
- 270 OPEN15,8,15,"U;"
- 280 PRINT#15,"M-W"CHR$(105)CHR$(0)""
- 290 PRINT#15,"N0:RECOVERED FILES,RF"
- 300 GET#15,A,A$,B,B:IFATHEN290
- 310 FORA=0TO498STEP166
- 320 PRINT"[147][201]NSERT DAMAGED DISC AND PRESS [211][208][193][195][197]..."
- 330 POKE198,0:WAIT198,1:POKE198,0
- 340 PRINT"[147][207]KAY - READING FROM DISC..."
- 350 FORB=0TO165
- 360 IFNOT(D(T1,B1))THENB=B-1:GOTO410
- 370 OPEN5,8,5,"#"
- 380 PRINT#15,"U1:"5;0;T1;B1
- 390 PRINT#15,"B-P:5,0"
- 400 POKE698,B+90:SYS679:CLOSE5
- 410 B1=B1+1:IFB1=21THENB1=0:T1=T1+1
- 420 NEXT
- 430 PRINT"[147][201]NSERT FRESH DISC AND PRESS [211][208][193][195][197]..."
- 440 POKE198,0:WAIT198,1:POKE198,0
- 450 PRINT"[147][207]KAY - WRITING TO DISC..."
- 460 FORB=0TO165
- 470 IFNOT(D(T2,B2))THENB=B-1:GOTO520
- 480 OPEN5,8,5,"#":POKE726,90+B
- 490 PRINT#15,"B-P:5,0":SYS712
- 500 PRINT#15,"U2:"5;0;T2;B2
- 510 CLOSE5
- 520 B2=B2+1:IFB2=21THENB2=0:T2=T2+1
- 530 NEXT:NEXT
- 540 DATA162,5,32,198,255,160,0,32,207,255,72,120,169,,133,1,104,153,,,169,55
- 550 DATA133,1,88,200,208,235,162,,76,198,255,162,5,32,201,255,160,,120,169,,133
- 560 DATA1,185,,,72,169,55,133,1,88,104,32,210,255,200,208,235,162,3,76,201,255
- 570 PRINT"[147][207]KAY - SEARCHING DISC..."
- 580 OPEN5,8,5,"#"
- 590 PRINT#15,"U1:5,0,18,0"
- 600 PRINT#15,"B-P:5,4"
- 610 FORA=0TO139:PRINT#5,CHR$(0);
- 620 NEXT:PRINT#15,"U2:5,0,18,0"
- 630 CLOSE5:T=1:B=-1:S=1
- 640 FORA=0TO255:S(A)=0:NEXT:S(1)=255:FE=0:GOTO660
- 650 IFD(T,B)THEN690
- 660 B=B+1:IFB=21THENB=0:T=T+1
- 670 IFT=36THEN890
- 680 GOTO650
- 690 OPEN5,8,5,"#"
- 700 PRINT#15,"U1:"5;0;T;B
- 710 PRINT#15,"B-P:5,2"
- 720 GET#5,A$,B$,C$,C$:CLOSE5
- 730 SA=ASC(A$+CHR$(0))+ASC(B$+CHR$(0))*256:BS=B$=C$
- 740 A=0
- 750 IFSA<>A(A)THEN870
- 760 F$=RIGHT$("00"+RIGHT$(STR$(FE+S*8-8),LEN(STR$(FE+S*8-8))-1),3)
- 770 A$="-M/C AT":IFBSTHENA$="-BAS AT"
- 780 F$="[130]"+CHR$(T)+CHR$(B)+F$+A$+RIGHT$(" "+STR$(SA),6)
- 790 FORA=1TO19:S(FE*32+1+A)=ASC(MID$(F$,A,1)):NEXT
- 800 FE=(FE+1)AND7:IFFETHEN870
- 810 S(0)=18:S(1)=S+1
- 820 OPEN5,8,5,"#":PRINT#15,"B-P:5,0"
- 830 FORA=0TO255:PRINT#5,CHR$(S(A));
- 840 NEXT:PRINT#15,"U2:"5;0;18;S
- 850 CLOSE5:S=S+1:IFS<19THEN640
- 860 PRINT"[147][206]OT ENOUGH ROOM!":GOTO900
- 870 A=A+1:IFNOT(N<A)THEN750
- 880 GOTO660
- 890 PRINT"[147][207]KAY - FINISHED."
- 900 OPEN5,8,5,"#"
- 910 PRINT#15,"B-P:5,0"
- 920 FORA=0TO255:PRINT#5,CHR$(S(A));
- 930 NEXT:PRINT#15,"U2:"5;0;18;S
- 940 CLOSE5:CLOSE15
- 950 PRINT"[157]"S*8-8+FE"FILES FOUND."
- 960 POKE198,10:FORA=631TO640
- 970 READB:POKEA,B:NEXT:POKE808,237
- 980 DATA76,79,65,68,34,36,34,44,56,13
-